package com.deer.wms.ware.task.service;

import com.deer.wms.base.system.model.*;
import com.deer.wms.ware.task.erp.UpdatePPF;

import java.util.List;
import java.util.Map;


/**
 * @Author: xu
 * @Date: 2022/05/28/17:39
 * @Description: ERP 回传接口
 */
public interface PushErpService {

    /**
     * 下推创建新出入库单：
     * 72-收料通知单 ==> 1-外购入库单；
     * 702-来料检验申请单 ==> 1-外购入库单；
     * 702-来料检验申请单 ==> 5-委外加工产品入库单；
     * 85-生产任务单 ==> 2-产品入库单；
     * 88-生产投料单 ==> 24-生产领料单；
     * 88-委外投料单 ==> 28-委外加工出库单；
     * 83-发货通知单 ==> 41-调拨单；
     * 82-退货通知单 ==> 21-销售出库单；
     * 251300021-生产投料单 ==> 24-生产领料单；
     * 251300021-生产投料单 ==> 29-其他出库单；
     * 251300022-生产退料单 ==> 24-生产领料单；
     * 251300022-生产退料单 ==> 29-其他出库单；
     * 251300056-返修拆改通知单 ==> 10-其他入库单；
     * 251300056-返修拆改通知单 ==> 29-其他出库单；
     * 251300057-返修拆改投料单 ==> 29-其他出库单；
     * 251300058-返修拆改退料单 ==> 29-其他出库单；
     * 200000011-其他出库申请单 ==> 29-其他出库单；
     * 200000013-其他出库(红字退库)申请单 ==> 29-其他出库单
     *
     * @param bean
     */
    Map<String, String> pushIMBIll(OrderToErpBO bean);


    /**
     * 质检回传接口
     *
     * @param bean
     */
    String pushQCBIll(QcOrderToErpBO bean);

    String PushPOReceivingReturn(QcOrderToErpBO bean);


    /**
     * 获取token
     *
     * @return
     */
    String getToken();

    /**
     * 获取入库数据源
     *
     * @param map
     * @return
     */
    List<PurchaseOrderBO> GetAllIMInSourceBills(Map<String, Object> map);


    public List<PurchaseOrderBO> GetAllIMSourceBills(Map<String, Object> map);

    /**
     * 出库数据源
     *
     * @param date
     * @return
     */
    List<BillOutBO> OutSourceBill(Map<String, Object> map);


    /**
     * 创建新入库单
     */
    Map<String, String> CreateIMBill(OrderToErpBO bean);


    PackingDeliveryBo sDPackingDelivery(String agreementNo);

    /**
     * 二次回传
     *
     * @param bean
     */
    Map<String, String> twiceSend(OrderToErpBO bean);

    /**
     * 251300045-总箱件清单 数据回传
     *
     * @param sdPackingBo
     */
    Map<String, String> sDPacking(SDPackingBo sdPackingBo);


    /**
     * 质检回传
     */

    String CheckBill(Map<String, Object> map);


    /**
     * 获取异常id
     *
     * @param abnormalBillNo
     * @return
     */
    Integer findException(String abnormalBillNo);


    /**
     * 获取特采单号id
     *
     * @param abnormalBillNo
     * @return
     */
    Integer findSpecial(String abnormalBillNo);


    public List<Integer> getNotAasnStock();


    /**
     * 获取入库数据源
     *
     * @param map
     * @return
     */
    PurchaseOrderBO erpByBillNo(Map<String, Object> map);


    /**
     * 冻结任务单数量
     *
     * @param list
     */
    void UpdatePPFeedAssignedQty(List<UpdatePPF> list);
}
